📹 REQUISITOS DEL VIDEO DE PRESENTACIÓN (EVIDENCIA)
No hay tiempo máximo. Los minutos que sean necesarios, no debe incluirse los errores en la grabación. En cuanto haya alguno debén detener la grabación y ver como fue la corrección paso a paso, también incluirla en el video.
Y solo debe ser un SOLO video no varios, Entonces si deben pegar varios videos, deberán hacerlo para que su examen tenga validez para ser revisado con todos los requerimientos solicitados. Lo que su conocimiento no llegue a saber, deberan aprender a hacerlo. Como hacerlo, Hay muchos recursos de apredizaje en internet. Para Lograrlo.
Solo debe escucharse la voz del alumno, durante el video, no la de otra persona mas, por ello debe el alumno prepararse antes de iniciar la grabación. Y durante este proceso debe verse esta Guia de apoyo, para que vayan diciendo lo que se va solicitando, todo esto es requisito para tener derecho a la evaluación.
Durante la grabación No se debe ver la utilizacion de la IA(inteligencia Artificial) una vez se detecte un error, se detiene el video y se resuleve con (IA) si asi lo eligen, despues se reinicia video, se explica que ocurrio, y se muestra lo que se realizo apoyado con la IA y las partes de codigo que cambio.
Tu rostro DEBE ser visible al inicio y durante todo el video dando explicación. Ubicación: Esquina inferior izquierda. Un Rectangulo de 1/6 de tamaño tanto en Fila y Columna
- Utiliza software de grabación de pantalla con cámara (OBS Studio, Loom, Zoom, etc.)
- Asegúrate de que tu rostro sea visible constantemente
- Habla claro y pausado durante toda la demostración, se escuche con buen volumen y claridad
- Se debe escribir cada linea de comando de manera individual y explicar que ejecuta tal y como lo ofrece esta guia
- En caso de no cumplir con algun requerimiento antes mencionado se deberá realizar de nuevo toda la grabación, no sera aceptada a medias, todo debe estar según lo estipulado
Debe mostrar el funcionamiento completo del CRUD y el sistema de autenticación.
- Crear (Create): Agregar nuevos libros, autores, categorías desde el admin
- Leer (Read): Navegar por las listas, ver detalles de libros y autores
- Actualizar (Update): Editar información de libros existentes
- Eliminar (Delete): Demostrar eliminación de registros
- Autenticación: Mostrar login/logout del panel de administración
- Navegación: Probar todas las páginas principales
- Búsquedas y Filtros: Demostrar funcionalidad de búsqueda
Subir a Google Drive (con permisos de visualización pública) y adjuntar el enlace. Sin restricciones.
- Sube el video a Google Drive
- Clic derecho en el archivo → Obtener enlace
- Cambiar permisos a "Cualquier persona con el enlace puede ver"
- Copiar el enlace de la práctica y enviarlo a el Email de la Asignatura
- Enviarlo al Email: Tenor_Prado@yahoo.com.mx
- Escribiendo en Asunto: Apellido Paterno Apellido Materno Nombres Grupo Examen Práctica U1
- ejemplo: Prado Diaz Bernardo DSM5-1 Examen Práctica U1
- en el cuerpo del Email: Lo mismo Prado Diaz Bernardo DSM5-1 Examen Práctica U1 y el enlace de Google DRIVE listo para ver video
⚠️ IMPORTANTE
- El video ES OBLIGATORIO para la evaluación completa
- Debes aparecer TÚ en el video, no solo tu voz
- Muestra tu rostro desde el inicio explicando qué vas a demostrar
- Demuestra que el sistema funciona en PythonAnywhere (producción)
- NO uses videos pregrabados de terceros
🎯 OBJETIVOS DE APRENDIZAJE
Al completar esta práctica, el estudiante será capaz de:
- ✅ Instalar y configurar un entorno de desarrollo Python con Django
- ✅ Crear y estructurar un proyecto Django siguiendo mejores prácticas
- ✅ Conectar Django con una base de datos MySQL
- ✅ Diseñar modelos de datos y realizar migraciones
- ✅ Implementar vistas basadas en funciones y clases
- ✅ Crear templates con el sistema de plantillas de Django
- ✅ Utilizar Git y GitHub para control de versiones
- ✅ Desplegar una aplicación Django en PythonAnywhere
💻 REQUISITOS PREVIOS
Software Necesario:
- Python 3.10+ o superior
- MySQL Server 8.0+ o superior
- Git
- VS Code (editor recomendado)
- Navegador web moderno
Cuentas Requeridas:
- Cuenta de GitHub (gratuita) - github.com
- Cuenta de PythonAnywhere (gratuita) - pythonanywhere.com
📦 PARTE 1: CONFIGURACIÓN DEL ENTORNO
Paso 1.1: Verificar Instalación de Python
# Abrir PowerShell como Administrador
# Verificar versión de Python
python --version
# Salida esperada: Python 3.10.x o superior
# Verificar pip
pip --version
Paso 1.2: Crear Directorio del Proyecto
# Crear carpeta para el proyecto
mkdir D:\Proyectos\biblioteca_django
cd D:\Proyectos\biblioteca_django
Paso 1.3: Crear Entorno Virtual
# Crear entorno virtual
python -m venv venv
# Activar el entorno virtual (Windows)
.\venv\Scripts\Activate
# Verificar activación (debe aparecer (venv) al inicio del prompt)
.\venv\Scripts\Activate
Paso 1.4: Instalar Django y Dependencias
# Actualizar pip
python -m pip install --upgrade pip
# Instalar Django
pip install Django==4.2
# Instalar conector MySQL
pip install mysqlclient
# Instalar otras dependencias
pip install pillow
# Crear archivo requirements.txt
pip freeze > requirements.txt
🏗️ PARTE 2: CREACIÓN DEL PROYECTO DJANGO
Paso 2.1: Crear Proyecto Django
# Crear proyecto
django-admin startproject biblioteca_project .
# Verificar estructura creada
dir
Paso 2.2: Crear Aplicación "libros"
# Crear aplicación
python manage.py startapp libros
Paso 2.3: Registrar la Aplicación
Editar biblioteca_project/settings.py:
# Localizar INSTALLED_APPS y agregar 'libros'
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'libros', # ← AGREGAR ESTA LÍNEA
]
🗄️ PARTE 3: CONFIGURACIÓN DE MYSQL
Paso 3.1: Crear Base de Datos en MySQL
-- Abrir MySQL Workbench o línea de comandos MySQL
-- Crear base de datos
CREATE DATABASE biblioteca_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Crear usuario y otorgar privilegios
CREATE USER 'biblioteca_user'@'localhost' IDENTIFIED BY 'Pass123456!';
GRANT ALL PRIVILEGES ON biblioteca_db.* TO 'biblioteca_user'@'localhost';
FLUSH PRIVILEGES;
-- Verificar creación
SHOW DATABASES;
SELECT user FROM mysql.user WHERE user='biblioteca_user';
Paso 3.2: Configurar Archivo .env
Crear archivo .env en la raíz del proyecto donde esta ubicado el archivo manage.py:
# Configuración de Base de Datos
DB_NAME=biblioteca_db
DB_USER=biblioteca_user
DB_PASSWORD=Pass123456!
DB_HOST=localhost
DB_PORT=3306
# Configuración de Django
SECRET_KEY=django-insecure-tu-clave-secreta-aqui-cambiar-en-produccion # esta clave se encuentra en el archivo settings.py
DEBUG=True
Paso 3.3: Configurar settings.py para MySQL
Editar biblioteca_project/settings.py:
import os
from pathlib import Path
import environ # Asegúrate de tener esto
# 1. Definir la ruta base del proyecto
BASE_DIR = Path(__file__).resolve().parent.parent
# 2. Inicializar environ y asignarlo a la variable 'config'
# (Aquí es donde ocurre la magia: llamamos 'config' al objeto env)
config = environ.Env()
# 3. Leer el archivo .env
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
# --- Ahora tus líneas siguientes funcionarán ---
SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', default=False, cast=bool)
# ... más abajo en el archivo, reemplazar DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': config('DB_NAME'),
'USER': config('DB_USER'),
'PASSWORD': config('DB_PASSWORD'),
'HOST': config('DB_HOST', default='localhost'),
'PORT': config('DB_PORT', default='3306'),
'OPTIONS': {
'charset': 'utf8mb4',
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
}
}
# Configuración de idioma y zona horaria
LANGUAGE_CODE = 'es-mx'
TIME_ZONE = 'America/Mexico_City'
USE_I18N = True
USE_TZ = True
# Instala la librería: Ejecuta el siguiente comando para instalar el paquete necesario:
pip install django-environ
#Verifica la instalación: Para estar seguro de que ahora sí existe en tu entorno, puedes listar los paquetes instalados:
pip list
# Tip adicional: Si tienes un archivo llamado requirements.txt en tu proyecto, lo ideal es ejecutar:
pip install -r requirements.txt
Paso 3.4: Verificar Conexión
# Probar conexión a la base de datos
python manage.py check
# Salida esperada: System check identified no issues (0 silenced).
📊 PARTE 4: MODELOS Y BASE DE DATOS
Modelos a Crear
Crear los siguientes modelos en libros/models.py:
- Autor: nombre, fecha_nacimiento, pais_origen, biografia, foto
- Categoría: nombre, descripcion, activa
- Editorial: nombre, pais, sitio_web, email
- Libro: isbn, titulo, autor (FK), categorias (M2M), editorial (FK), fecha_publicacion, numero_paginas, sinopsis, portada, precio, stock, estado, calificacion
- Préstamo: libro (FK), nombre_usuario, email_usuario, fechas, estado
Codigo: Django para la Creacion de tablas en MySQL
Para implementar estos modelos en Django, utilizaremos campos específicos para cada tipo de dato
(fechas, correos, imágenes, etc.) y definiremos las relaciones necesarias como ForeignKey (FK)
y ManyToManyField (M2M).
Aquí tienes el código para libros/models.py:
*** Codigo Python *****
from django.db import models
class Autor(models.Model):
nombre = models.CharField(max_length=150)
fecha_nacimiento = models.DateField()
pais_origen = models.CharField(max_length=100)
biografia = models.TextField()
foto = models.ImageField(upload_to='autores/', null=True, blank=True)
def __str__(self):
return self.nombre
class Categoria(models.Model):
nombre = models.CharField(max_length=100)
descripcion = models.TextField()
activa = models.BooleanField(default=True)
def __str__(self):
return self.nombre
class Editorial(models.Model):
nombre = models.CharField(max_length=150)
pais = models.CharField(max_length=100)
sitio_web = models.URLField(null=True, blank=True)
email = models.EmailField()
def __str__(self):
return self.nombre
class Libro(models.Model):
ESTADO_CHOICES = [
('disponible', 'Disponible'),
('prestado', 'Prestado'),
('mantenimiento', 'En Mantenimiento'),
]
isbn = models.CharField(max_length=13, unique=True)
titulo = models.CharField(max_length=255)
autor = models.ForeignKey(Autor, on_delete=models.CASCADE)
categorias = models.ManyToManyField(Categoria)
editorial = models.ForeignKey(Editorial, on_delete=models.SET_NULL, null=True)
fecha_publicacion = models.DateField()
numero_paginas = models.PositiveIntegerField()
sinopsis = models.TextField()
portada = models.ImageField(upload_to='portadas/', null=True, blank=True)
precio = models.DecimalField(max_digits=10, decimal_places=2)
stock = models.PositiveIntegerField(default=0)
estado = models.CharField(max_length=20, choices=ESTADO_CHOICES, default='disponible')
calificacion = models.FloatField(default=0.0)
def __str__(self):
return self.titulo
class Prestamo(models.Model):
ESTADO_PRESTAMO = [
('activo', 'Activo'),
('devuelto', 'Devuelto'),
('retrasado', 'Retrasado'),
]
libro = models.ForeignKey(Libro, on_delete=models.CASCADE)
nombre_usuario = models.CharField(max_length=150)
email_usuario = models.EmailField()
fecha_prestamo = models.DateTimeField(auto_now_add=True)
fecha_devolucion_esperada = models.DateField()
estado = models.CharField(max_length=15, choices=ESTADO_PRESTAMO, default='activo')
def __str__(self):
return f"{self.libro.titulo} - {self.nombre_usuario}"
**** Detalles importantes que agregué: *****
on_delete: Es obligatorio en Django para las ForeignKey. Usé CASCADE para que si borras un autor,
se borren sus libros, y SET_NULL para la editorial para que el libro no desaparezca si la editorial
es eliminada.
upload_to: Define las carpetas donde se guardarán las fotos
(necesitarás instalar la librería Pillow con pip install Pillow).
choices: Para los campos "estado", es mejor usar una lista de opciones para evitar errores de escritura.
DecimalField: Para el precio, siempre es mejor usar este campo que un Float para evitar problemas de
precisión monetaria.
Siguientes pasos:
Asegúrate de tener instalado Pillow (pip install Pillow) para manejar las imágenes.
Ejecuta las migraciones para crear las tablas en la base de datos.
Paso 4.2: Crear Migraciones
# Crear archivos de migración
python manage.py makemigrations
Paso 4.3: Aplicar Migraciones
# Aplicar migraciones a la base de datos
python manage.py migrate
Paso 4.4: Crear Superusuario
# Crear superusuario para acceder al admin
python manage.py createsuperuser
# Ingresar datos solicitados:
# Username: admin
# Email: admin@biblioteca.com
# Password: Admin123456!
# Password (again): Admin123456!
python manage.py runserver y accede a http://127.0.0.1:8000/admin/ para verificar que el admin funciona.
🎨 PARTE 5: VISTAS Y URLS
Vistas a Implementar
| Vista | URL | Descripción |
|---|---|---|
| inicio | / | Página principal con estadísticas |
| lista_libros | /libros/ | Listado de todos los libros |
| detalle_libro | /libro/<id>/ | Detalles de un libro específico |
| lista_autores | /autores/ | Listado de autores |
| detalle_autor | /autor/<id>/ | Detalles de un autor |
| busqueda_avanzada | /busqueda/ | Búsqueda con filtros |
| estadisticas | /estadisticas/ | Dashboard con métricas |
CODIGO BUSCADO para el código completo de las vistas y configuración de URLs.
📱 PARTE 6: TEMPLATES
Estructura de Templates (Esta carpeta llamada templates debe estar dentro de la carpeta biblioteca_django y dentro de ella estan las carpetas base y libros)
templates/
├── base/
│ └── base.html # Template base con navbar y footer
└── libros/
├── inicio.html # Página de inicio
├── lista_libros.html # Lista de libros
├── detalle_libro.html # Detalle de libro
├── lista_autores.html # Lista de autores
└── detalle_autor.html # Detalle de autor
Archivos Estáticos (Esta carpeta llamada static debe estar dentro de la carpeta biblioteca_django y dentro de ella estan las carpetas css, js e images)
static/
├── css/
│ └── styles.css # Estilos personalizados
├── js/
│ └── main.js # JavaScript personalizado
└── images/ # Imágenes del sitio
CODIGO BUSCADO para el código completo de los Templates y Archivos Estáticos.
- Bootstrap 5 (para diseño responsive)
- Font Awesome (para iconos)
- CSS personalizado
- JavaScript para interactividad
📂 PARTE 7: CONTROL DE VERSIONES CON GITHUB
Paso 7.1: Configurar Git Localmente
# Configurar nombre de usuario
git config --global user.name "Tu Nombre"
# Configurar email
git config --global user.email "tu.email@ejemplo.com"
# Verificar configuración
git config --list
Paso 7.2: Crear .gitignore
Crear archivo .gitignore:
# Python
*.py[cod]
__pycache__/
*.pyc
# Django
*.log
db.sqlite3
/media
/staticfiles
# Entorno virtual
venv/
env/
# Variables de entorno
.env
# IDEs
.vscode/
.idea/
Paso 7.3: Inicializar Repositorio Git
# Inicializar git
git init
# Agregar todos los archivos
git add .
# Crear primer commit
git commit -m "Initial commit: Proyecto Biblioteca Django con MySQL"
Paso 7.4: Crear Repositorio en GitHub
- Ir a GitHub.com
- Iniciar sesión con tu cuenta
- Crear nuevo repositorio:
- Clic en "+" → "New repository"
- Nombre:
biblioteca-django-uth - Descripción: "Sistema de Biblioteca con Django y MySQL - Práctica Unidad 1"
- Público o Privado
- NO inicializar con README, .gitignore o licencia
- Clic en "Create repository"
Paso 7.5: Conectar Repositorio Local con GitHub
# Agregar remote origin (reemplazar USERNAME con tu usuario)
git remote add origin https://github.com/USERNAME/biblioteca-django-uth.git
# Verificar remote
git remote -v
# Subir código a GitHub
git branch -M main
git push -u origin main
Paso 7.6: Crear README.md
Crear un archivo README.md con:
- Descripción del proyecto
- Tecnologías utilizadas
- Instrucciones de instalación
- Estructura del proyecto
- Información del autor
☁️ PARTE 8: DESPLIEGUE EN PYTHONANYWHERE
Paso 8.1: Crear Cuenta
- Ir a PythonAnywhere.com
- Seleccionar plan "Beginner (Free)"
- Crear cuenta y verificar email
Paso 8.2: Configurar MySQL en PythonAnywhere
- En Dashboard, ir a "Databases"
- Crear database:
biblioteca_db - Anotar: database name, username, password, host
Paso 8.3: Clonar Repositorio
# En Bash console de PythonAnywhere
git clone https://github.com/USERNAME/biblioteca-django-uth.git
cd biblioteca-django-uth
Paso 8.4: Crear Entorno Virtual
# Crear entorno virtual
mkvirtualenv --python=/usr/bin/python3.10 biblioteca_env
# Instalar dependencias
pip install -r requirements.txt
Paso 8.5: Configurar Variables de Entorno
Crear .env con valores de producción:
DB_NAME=USERNAME
DB_USER=USERNAME
DB_PASSWORD=tu_password_mysql
DB_HOST=USERNAME.mysql.pythonanywhere-services.com
DB_PORT=3306
SECRET_KEY=nueva-clave-secreta-para-produccion
DEBUG=False
ALLOWED_HOSTS=USERNAME.pythonanywhere.com
Paso 8.6: Ejecutar Migraciones
python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic --noinput
Paso 8.7: Configurar Web App
- Ir a "Web" en Dashboard
- "Add a new web app"
- Seleccionar "Manual configuration"
- Python 3.10
- Configurar WSGI file
- Configurar Virtualenv
- Configurar Static files
- Recargar aplicación
✅ Aplicación Desplegada
Tu aplicación estará disponible en: https://USERNAME.pythonanywhere.com
📊 RÚBRICA DE EVALUACIÓN Y ESPECIFICACIONES
Total: 100 puntos, para el puntaje. Ya en la Calificación se dividira entre 10
| Criterio | Descripción | Puntos |
|---|---|---|
| 1. CONFIGURACIÓN DEL ENTORNO (10 pts) | ||
| 1.1 Instalación correcta | Python, Django y MySQL instalados correctamente | 3 |
| 1.2 Entorno virtual | Creación y activación de entorno virtual | 3 |
| 1.3 Dependencias | requirements.txt completo y funcional | 2 |
| 1.4 Variables de entorno | Archivo .env configurado correctamente | 2 |
| 2. PROYECTO DJANGO (15 pts) | ||
| 2.1 Creación del proyecto | Proyecto Django creado correctamente | 3 |
| 2.2 Estructura | Directorios organizados adecuadamente | 3 |
| 2.3 Configuración | settings.py configurado apropiadamente | 4 |
| 2.4 Separación por entornos | Configuración distingue desarrollo/producción | 3 |
| 2.5 Seguridad | SECRET_KEY y DEBUG manejados correctamente | 2 |
| 3. BASE DE DATOS MYSQL (15 pts) | ||
| 3.1 Creación de BD | Base de datos MySQL creada | 3 |
| 3.2 Conexión | Django conectado correctamente a MySQL | 4 |
| 3.3 Usuario y privilegios | Usuario con permisos adecuados | 3 |
| 3.4 Charset UTF-8 | Configuración de codificación correcta | 2 |
| 3.5 Pruebas | Conexión verificada exitosamente | 3 |
| 4. MODELOS DE DATOS (15 pts) | ||
| 4.1 Modelo Autor | Con todos los campos requeridos | 3 |
| 4.2 Modelo Libro | Con relaciones ForeignKey y ManyToMany | 4 |
| 4.3 Categoría y Editorial | Modelos implementados correctamente | 3 |
| 4.4 Modelo Préstamo | Implementado con campos necesarios | 2 |
| 4.5 Métodos | __str__ y properties implementados | 1 |
| 4.6 Migraciones | Creadas y aplicadas exitosamente | 2 |
| 5. VISTAS Y URLS (10 pts) | ||
| 5.1 Vista inicio | Página de inicio funcional | 2 |
| 5.2 Vistas de lista | Lista de libros y autores funcionando | 2 |
| 5.3 Vistas de detalle | Detalles implementados correctamente | 2 |
| 5.4 Búsqueda | Sistema de búsqueda funcional | 2 |
| 5.5 URLs | Configuración correcta de rutas | 2 |
| 6. TEMPLATES Y FRONTEND (10 pts) | ||
| 6.1 Template base | Herencia de templates implementada | 2 |
| 6.2 Templates principales | Lista y detalle creados | 3 |
| 6.3 Diseño responsive | Bootstrap 5 correctamente aplicado | 2 |
| 6.4 CSS personalizado | Estilos propios aplicados | 2 |
| 6.5 JavaScript | Interactividad básica implementada | 1 |
| 7. PANEL DE ADMINISTRACIÓN (5 pts) | ||
| 7.1 Modelos registrados | Todos los modelos en admin | 2 |
| 7.2 Personalización | Admin personalizado (opcional) | 2 |
| 7.3 Superusuario | Creado y funcional | 1 |
| 8. CONTROL DE VERSIONES (10 pts) | ||
| 8.1 Repositorio Git | Git inicializado correctamente | 2 |
| 8.2 .gitignore | Archivos sensibles excluidos | 2 |
| 8.3 Commits | Mensajes claros y organizados | 3 |
| 8.4 GitHub | Repositorio público/privado activo | 2 |
| 8.5 README | Documentación completa | 1 |
| 9. DESPLIEGUE (10 pts) | ||
| 9.1 PythonAnywhere | Aplicación desplegada y accesible | 4 |
| 9.2 BD en producción | MySQL configurado en PythonAnywhere | 2 |
| 9.3 Archivos estáticos | CSS, JS e imágenes cargando | 2 |
| 9.4 Configuración | Producción correctamente configurada | 2 |
| 10. DOCUMENTACIÓN Y BUENAS PRÁCTICAS (10 pts) | ||
| 10.1 Código documentado | Docstrings y comentarios | 3 |
| 10.2 Nombres descriptivos | Variables y funciones bien nombradas | 2 |
| 10.3 Código limpio | Estructura clara y organizada | 2 |
| 10.4 Manejo de errores | Try-except básicos implementados | 2 |
| 10.5 README | Instrucciones claras de instalación | 1 |
Escala de Calificación
| Puntos | Calificación | Nivel |
|---|---|---|
| 9.5-10.0 | ESTRATÉGICO | E |
| 8.50-9.49 | AUTÓNOMO | A |
| 7.5-8.49 | BÁSICO | B |
| 6.50-7.49 | RECEPTIVO | R |
| 0-6.49 | PREFORMAL | NA |
Puntos Extra (Opcional)
| Criterio | Puntos Extra |
|---|---|
| API REST con Django REST Framework | +10 |
| Sistema de autenticación de usuarios | +8 |
| Paginación en listas | +5 |
| Filtros avanzados | +5 |
| Pruebas unitarias (tests) | +7 |
| Diseño UI/UX excepcional | +5 |
✅ LISTA DE VERIFICACIÓN FINAL
Antes de Entregar
- Entorno virtual creado y funcionando
- Base de datos MySQL configurada
- Todos los modelos creados y migrados
- Vistas funcionando correctamente
- Templates renderizando bien
- Archivos estáticos cargando (CSS, JS, imágenes)
- Panel admin accesible y funcional
- Repositorio Git con commits organizados
- Código subido a GitHub
- README.md completo y detallado
- Aplicación desplegada en PythonAnywhere
- URL de PythonAnywhere funcionando sin errores
- Código documentado con docstrings
- Sin errores 404 o 500
- Formularios validando correctamente
- Video de demostración grabado y subido
Entregables Requeridos
- URL de GitHub:
https://github.com/USERNAME/biblioteca-django-uth - URL de PythonAnywhere:
https://USERNAME.pythonanywhere.com - Credenciales de Admin: Enviar por mensaje privado al profesor
- Video de Demostración: Enlace de Google Drive con permisos públicos
- Documento PDF (opcional): Capturas de pantalla del proceso
🎓 CONCLUSIÓN
Al completar esta práctica habrás:
- ✅ Desarrollado una aplicación web completa con Django
- ✅ Implementado modelos de datos complejos con relaciones
- ✅ Conectado Django con MySQL exitosamente
- ✅ Creado un frontend responsive y atractivo
- ✅ Utilizado Git y GitHub profesionalmente
- ✅ Desplegado una aplicación en producción
📚 Recursos Adicionales
- Documentación oficial de Django
- Tutorial de Django
- Bootstrap 5 Docs
- MySQL Documentation
- Git Handbook
- PythonAnywhere Help
💡 Consejos Finales
- Guarda cambios frecuentemente con commits en Git
- Prueba cada funcionalidad antes de continuar con la siguiente
- Lee los mensajes de error con atención, te indican el problema
- Consulta la documentación oficial cuando tengas dudas
- Pide ayuda si te atascas más de 30 minutos en algo
- Documenta tu código para tu futuro yo y otros desarrolladores
- No copies y pegues sin entender - aprende cada línea de código
- Graba el video con tiempo - no lo dejes para el último momento
🚀 ¡Éxito en tu práctica!
Esta práctica es fundamental para comprender el desarrollo web con Django. Tómate tu tiempo, aprende cada concepto y disfruta el proceso de creación.